package com.simple.datax.transform;

import com.simple.datax.api.TransformerException;
import com.simple.datax.transform.tcs.Ec2TcsTransformerImpl;
import com.simple.datax.transform.tcs.Tcs2EcTransformerImpl;

/**
 * @Title: SimpleTransformFactory.java
 * @Package com.simple.datax.transform
 * @Description: 报文转换器工厂类
 * @author Paladin Chen
 * @date 2012-12-31 下午1:29:10
 * @version V1.0
 */
public class SimpleTransformFactory {
	private static SimpleTransformFactory stff;

	private SimpleTransformFactory() {

	}

	/**
	 * 获取具体转换类
	 * 
	 * @param msgType
	 *            报文大类型
	 * @param msgBusiType
	 *            报文业务类型
	 * @param isResponse
	 *            是否为应答报文
	 * @param isIn
	 *            是否是转成内部格式
	 * @return
	 */
	public synchronized static SimpleTransformFactory getInstance() throws TransformerException {
		if (stff == null) {
			stff = new SimpleTransformFactory();
		}
		return stff;
	}

	public SimpleTransformer getTransformer(String msgType, String msgBusiType, boolean isResponse, boolean isIn)
			throws TransformerException {
		// 无论是进入系统还是出系统，对于msgType为Ec的报文系统做默认转换（目前没有转换）
		if ("EC".equalsIgnoreCase(msgType)) {
			return new DefaultSimpleTransformer();
		}

		// 处理Tcs格式的报文转换工作，目前msgBusitype没有使用
		if ("TCS".equalsIgnoreCase(msgType)) {
			if (isIn) {
				return new Tcs2EcTransformerImpl();
			} else {
				// 处理内部格式到外部格式的转换
				return new Ec2TcsTransformerImpl();
			}
		}

		throw new TransformerException(String.format("Not Support MsgType:%s or MsgBusiType:%s", msgType, msgBusiType));

	}

}
